package juego.powerups;

import javax.swing.ImageIcon;

import java.util.TimerTask;
import javax.swing.JLabel;

import juego.control.Personaje;
import juego.entidades.Entidad;
import juego.entidades.Vacio;
import juego.graficos.ElementoGrafico;

import java.util.Timer;
import java.util.TimerTask;

public class Estrella extends PowerUp {

	protected Timer timer;
	public Estrella()
	{
		this.valor = 20;
	}
	
	protected Object clone()
	{
		Estrella e = new Estrella();
		return e;
	}

	@Override
	public String soy() {
		return ("estrella");
	}

	public void colisionarPowerUp(Personaje mario, int x, int y,JLabel jLabel1) {
		
		Entidad vacio= (Entidad) mario.getLevel().getEntidad(x,y);
		if (vacio.tienePremios()&& (!vacio.nombreEntidad().equals("piedra rompible"))){
			vacio.getPremio();
			jLabel1.remove(vacio.getGrafico());
			vacio.setGrafico(new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/vacio/vacio_transparente.png"))));
			vacio.getGrafico().setLocation(y*32, x*32);
			jLabel1.add(vacio.getGrafico());
			jLabel1.repaint();
			
			timer=new Timer();
			
			mario.agregarEstrella();
			if (mario.cantidadEstrellas()==2){
			mario.setPuntaje(mario.getPuntaje()+35);
			mario.getVentanaPrincipal().actualizarPuntaje();

		} else if (mario.cantidadEstrellas()==1){

			mario.hacerInmune();
			timer.schedule(new RemindTask(mario, x, y), 15* 1000);	
			mario.setPuntaje(mario.getPuntaje()+this.getValor());
			mario.getVentanaPrincipal().actualizarPuntaje();
			}
		
		
	}

	}


	public void dibujate(Personaje mario, int x, int y, JLabel jLabel1) {
		Vacio vacio=new Vacio();
		Estrella e=new Estrella();
		vacio.setGrafico(new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/powerups/estrella/star_.gif"))));
		vacio.addPremio(e);
		mario.getLevel().setEntidad(x-1,y,vacio);
		vacio.getGrafico().setLocation(y*32, (x-1)*32);
		jLabel1.add(vacio.getGrafico());
		jLabel1.repaint();
		
	}


}


 class RemindTask extends TimerTask {
	protected Personaje mario;
	protected int x;
	protected int y;
	
	public RemindTask (Personaje mario, int x, int y){
		this.mario=mario;
	}
	  public void run() {
	 
	  if( mario.cantidadEstrellas()==1){
		  int aux1=mario.miCaract().dameXtuya();
		  int aux2= mario.miCaract().dameYtuya();
		  int aux3= mario.miCaract().dameUptuyo();
		  mario.setCaracteristica(mario.Reservada(),aux1,aux2,aux3);}
	  else{ 
		  int aux1=mario.miCaract().dameXtuya();
		  int aux2= mario.miCaract().dameYtuya();
		  int aux3= mario.miCaract().dameUptuyo();
		  mario.setCaracteristica(mario.Reservada(),aux1+1,aux2,aux3); }
	  
	    
	  }
	}